#ifndef _WEBSOCKET_PROTOCOL_H_
#define _WEBSOCKET_PROTOCOL_H_

// 包含必要的头文件
#include "protocol.h"
#include <web_socket.h>
#include <freertos/FreeRTOS.h>
#include <freertos/event_groups.h>

// 服务器hello消息事件标志
#define WEBSOCKET_PROTOCOL_SERVER_HELLO_EVENT (1 << 0)

// WebSocket协议实现类
class WebsocketProtocol : public Protocol {
public:
    WebsocketProtocol();  // 构造函数
    ~WebsocketProtocol();  // 析构函数

    // 协议接口实现
    void Start() override;  // 启动协议
    void SendAudio(const std::vector<uint8_t>& data) override;  // 发送音频数据
    bool OpenAudioChannel() override;  // 打开音频通道
    void CloseAudioChannel() override;  // 关闭音频通道
    bool IsAudioChannelOpened() const override;  // 检查音频通道是否打开

private:
    EventGroupHandle_t event_group_handle_;  // FreeRTOS事件组句柄
    WebSocket* websocket_ = nullptr;  // WebSocket客户端实例

    // 私有方法
    void ParseServerHello(const cJSON* root);  // 解析服务器hello消息
    void SendText(const std::string& text) override;  // 发送文本消息
};

#endif
